The capacity of multimedia services rendered is growing rapidly, side by side with communication standards that are being continuously formulated to adapt services to handheld, and in general to various mobile wireless services rendering devices.
One aspect of the rapid growth of multimedia services capacity is that many handheld digital telecommunication and/or multimedia systems are designed for multitask applications, such as audio, video and graphics capabilities, television reception and modem capabilities. Exemplary systems and devices include, without limitation, cellular phones, palm-PCs, portable media players (“PMP”), digital video cameras and digital still cameras.
In addition, the deployment of mobile devices with integrated support for the reception of digital TV signals is now a reality. Until now, the feasibility of such support has been limited by several key factors such as power consumption, performance and size. Most attempts at addressing the handheld receiver market have been based on adapting existing home set-top box solutions to the demanding environment of mobile reception. Currently, there are devices capable of receiving TV broadcasts that conform to mobile digital video broadcast terrestrial (“DVB-T”) standards. VI3270T digital TV Receiver by Visson Technologies Inc. is an exemplary device for receiving DVB-T broadcast. DVB-T was not originally designed for mobile receivers.
The DVB-H (“H” standing for “handheld”) standard, which is a complementary terrestrial multimedia broadcasting system designed especially for portable and mobile usage, utilizes a “time-slicing” process to reduce receiver power consumption, and multiprotocol encapsulation forward error correction (“MPE-FEC”) to provide an additional layer of error correction. MPE-FEC utilizes what is known as a Reed-Solomon encoder. The Reed-Solomon encoder utilized in a DVB-H transmitter takes 191 data bytes and adds 64 parity bytes of redundancy. Additionally, the DVB-H transmitter calculates and transmits a cyclic redundancy check (“CRC”) data in the MPE-FEC packet header, and the receiver recalculates it to flag the MPE-FEC packet content as unreliable if the CRC check fails. In general, CRC is an error-detection technique consisting of a test performed on each block or frame of data by both sending and receiving modems, or transmitters and receivers. The sending modem, or transmitter, inserts the results of its tests in each data block in the form of a CRC code. The receiving modem (or receiver) compares its results with the received CRC code and responds with either a positive or negative acknowledgment, which is equivalent, in the field of the present disclosure, to “reliable” or “unreliable” sections in the MPE-FEC table.
If the MPE-FEC packet content is unreliable, the bytes in the packet are termed “erasure” symbols, and using erasure symbols allows the Reed Solomon decoder in the receiver to correct twice the number of data bytes that could be corrected if erasures symbols (also called herein just erasures or erasures information or data) were not used. In the case where erasures are used, the Reed-Solomon decoder can correct up to 64 bytes out of a 255-byte codeword. Otherwise it can correct up to 32 bytes out of 255 byte code words.
One of the prime objectives of the “time-slicing” process is to reduce the average power consumption of the terminal and enable smooth service handover. “Handover” refers to a receiver seeking and using an alternative communication channel for receiving the same station in cases where the receiver fails to receive data/information due to poor communication path. Time slicing involves sending data in bursts using significantly higher instantaneous bit rate compared to the bit rate required if the data were transmitted using traditional streaming mechanisms. Using time slicing allows inactivating, such as by “shutting-down”, the receiver for considerable amount of time; that is, most of the time the DVB-H receiver is in sleep mode, and it “wakes up” only to receive the required data packets. This saves considerable amount of power in the device. The time-slicing technology enables seamless handover between different DVB-H service networks. While in sleep mode, the DVB-H receiver can be woken up to search signals from neighbor networks or frequency bands or programs. Thus no additional hardware or double receivers are needed. Time slicing is more fully described in “Television on a handheld receiver—broadcasting with DVB-H”, by the Digi-TAG—The Digital Terrestrial Television Action Group”, and in “Mobile TV Forum” (website www.mobiletv.nokia.com/resources/faq/), for example. Each burst of transmitted data creates and transmits a data structure called MPE-FEC frame. The structure and processing of a MPE-FEC frame, a notion of which is given hereinafter, are defined by the DVB-H standard and in the implementation guide. Briefly, each MPE-FEC frame consists of two parts, the application data table, which may contain, for example, a portion of a video or audio transmission, and the error correction data table. The data in each table is arranged in sections, each of which may include one or more data bytes.
By “IP datagram” is meant herein an ensemble of consecutive digital bytes that represent a portion of the (or the entire) transmitted information. IP datagrams may vary in length; that is, in the number of their constituent bytes. By “section” is meant an ensemble of consecutive IP datagrams. According to telecommunication standards, different sections in a given MPE-FEC table may have different length though, for the sake of simplicity, sections in a given frame are typically characterized by having the same size. For example, a section may consist of a single MPE-FEC column, or one and a half columns, and so on. Nevertheless, current standards limit the maximal length allowed for a section to four consecutive columns.
One of the prime objectives of the “MPE-FEC” methodology is to improve the “channel-to-noise” (“C/N”) ratio and Doppler performance in mobile channels, and to improve the receiver's tolerance to impulse interference. This is accomplished by using an additional level of error correction, FEC, at the MPE layer. By adding parity information (parity bits), calculated from the datagrams, and sending this parity data in separate (redundant) MPE-FEC sections, error-free datagrams can be output after MPE-FEC decoding, despite possible very bad reception conditions. Time slicing, including its use for saving electrical power, and MPE-FEC are described, for example, in “DVB-H—Mobile TV” (“Imagination Technologies 2005”); “DVB-H architecture for mobile communications systems” (by Stuart Pekowsky and Khaled Maalej, Broadcast/Satellite Communications, April 2005, World Wide Web rfdesign.com); “Digital Video Mobile Broadcast (DVB-H) specification” (Digital Video Mobile Broadcast, Jun. 30, 2005, World Wide Web cellular.co.za/technologies/dvb-h.htm); and in “Transmission System for Handheld Terminals (DVB-H)” (Digital Video Broadcasting, DVB Document A081, June 2004), herein incorporated by reference.
MPE-FEC data sections that are received by the receiver in each data burst are analyzed one section at a time, usually on-the-fly, by using a checksum calculation process that is based on a cyclic redundancy check (“CRC”) technique to detect errors in them. If the CRC analysis indicates that a given MPE-FEC table includes one or more errors, then the receiver utilizes a Reed Solomon (“RS”) decoder to correct the erroneous sections within the MPE-FEC table.
Conventionally, in order for a RS decoder in a receiver to correct MPE-FEC data sections, each section is marked either as an error-free (reliable) section or as an erroneous (unreliable) section, such as by storing in a memory a corresponding binary erasure flags (a binary value 0 or 1). More specifically, if a section is determined (by a CRC check) as an unreliable section, every byte of this section is marked as unreliable. Likewise, if a section is determined (by the CRC check) as a reliable section, every byte of this section is marked as unreliable. Therefore, conventionally, the entire MPE-FEC table (every byte in the MPE-FEC table) is assigned either a reliable flag (binary value 1, for example) or an unreliable flag (binary value 0, for example). Therefore, the memory used for storing the reliable and unreliable flags has a size that is as large as the total number of bytes in the MPE-FEC table. Only after the processing (by the RS decoder) of the reliable and unreliable flags it may be determined whether a given section is reliable or not.
Because many MPE-FEC sections are typically contained in each MPE-FEC frame that is transmitted during a transmission burst, correcting MPE-FEC data sections traditionally requires a relatively large memory, as it needs to have up to [Number_of_rows]×[Number_of_columns] bits (for example, 255 Kbits). Therefore, handling MPE-FEC sections in the traditional manner significantly enlarges the memory required for MPE-FEC handling by 12.5% (255 Kbits out of 2 Mbits).